import 'package:flutter/cupertino.dart';

// 右侧边框带半圆凹槽
class RectWithHalfCircleClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    const double radius = 5.0; // 圆弧半径
    const double cutoutSize = 5.0; // 右侧半圆的半径
    final path = Path();

    // 从左上角开始绘制
    path.moveTo(0, 0);
    path.lineTo(size.width - radius, 0); // 上边直线到右上角
    path.quadraticBezierTo(size.width, 0, size.width, radius); // 右上角的圆弧

    path.lineTo(size.width, size.height / 2 - cutoutSize);

    // 右侧半圆凹槽
    path.arcToPoint(
      Offset(size.width, size.height / 2 + cutoutSize),
      radius: const Radius.circular(cutoutSize),
      clockwise: false,
    );

    path.lineTo(size.width, size.height - radius); // 右下角的圆弧

    path.quadraticBezierTo(size.width, size.height, size.width - radius, size.height); // 下边直线到左下角
    path.lineTo(radius, size.height); // 左下角的圆弧
    path.quadraticBezierTo(0, size.height, 0, size.height - radius); // 左边的圆弧

    path.lineTo(0, radius); // 左上角的圆弧
    path.quadraticBezierTo(0, 0, radius, 0); // 回到左上角
    path.close(); // 关闭路径
    return path;
  }

  @override
  bool shouldReclip(CustomClipper<Path> oldClipper) => false;
}
